﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MIAP.Entidades.Enums;

namespace MIAP.Entidades
{
    /// <summary>
    /// Encapsula las propiedades comunes para las funcionalidades Solicitud de Recargas, Atender Solicitud de Recarga, Actualización de versión válida y Ejecución de proyectos.
    /// </summary>
    [Serializable]
    public class ListaInfo
    {
        /// <summary>
        /// Obtiene o establece el id del usuario.
        /// </summary>
        public int? IdUsuario { get; set; }

        /// <summary>
        /// Obtiene o establece el id del proyecto.
        /// </summary>
        public int? IdProyecto { get; set; }

        /// <summary>
        /// Obtiene o establece el id del archivo.
        /// </summary>
        public int? IdArchivo { get; set; }

        /// <summary>
        /// Obtiene o establece el id de carga del archivo.
        /// </summary>
        public int IdCargaArchivo {get; set;}

        /// <summary>
        /// Obtiene o establece el nombre del ejecutor de la carga o recarga.
        /// </summary>
        public string NombreEjecutorCarga { get; set; }

        /// <summary>
        /// Obtiene o establece el nombre del proyecto al que pertenece el archivo.
        /// </summary>
        public string NombreProyecto { get; set; }

        /// <summary>
        /// Obtiene o establece el nombre del archivo a recargar.
        /// </summary>
        public string NombreArchivo { get; set; }

        /// <summary>
        /// Obtiene o establece la fecha en la que fue procesado el archivo (Carga o recarga).
        /// </summary>
        public DateTime FechaProceso { get; set; }

        /// <summary>
        /// Obtiene o establece el año al que pertenece el archivo.
        /// </summary>
        public int? Año { get; set; }

        /// <summary>
        /// Obtiene o establece el mes al que pertenece el archivo.
        /// </summary>
        public int? Mes { get; set; }

        /// <summary>
        /// Campo de respaldo de la propiedad NombreMes.
        /// </summary>
        private string nombreMes;

        /// <summary>
        /// Obtiene o establece el nombre del mes
        /// </summary>
        public string NombreMes
        {
            get
            {
                return Enum.GetName(typeof(Meses), Mes);
            }           
        }

        /// <summary>
        /// Obtiene o establece el tipo de proceso anterior que tuvo el archivo.
        /// </summary>
        public string TipoProceso { get; set; }

        /// <summary>
        /// Obtiene o establece la versión del archivo.
        /// </summary>
        public string Version { get; set; }

        /// <summary>
        /// Obtiene o establece la versión valida del archivo.
        /// </summary>
        public string VersionValida { get; set; }

        /// <summary>
        /// Obtiene o establece el indicador de si se trata de la versión valida del archivo o no.
        /// </summary>
        public bool IndicadorVersionValida { get; set; }

        /// <summary>
        /// Obtiene o establece el indicador de si el archivo es versionable o no.
        /// </summary>
        public bool Versionable { get; set; }

        /// <summary>
        /// Obtiene o establece el nombre del autorizador de la solicitud.
        /// </summary>
        public string Autorizador { get; set; }

        /// <summary>
        /// Ontiene o establece el estatus del proceso
        /// </summary>
        public string EstatusProceso { get; set; }

        /// <summary>
        /// Obtiene o establece el ID estatus del proceso
        /// </summary>
        public int IdEstatusProceso { get; set; }
    }
}
